package demo;

import java.io.PrintStream;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
import java.util.function.ToIntFunction;
import java.util.stream.Stream;

/**
 * StreamDemo2
 *
 * @author dingwen
 * @date 2022/03/26
 */
public class StreamDemo2 {
    public static void main(String[] args) {
        // 一次性
        Stream<String> stream = Arrays.stream("122432432429743824".split(""));
//       stream.forEach(System.out::println);
       // forEach 当前流已经终结，不能在继续使用
//       stream.forEach(System.out::println);

//        mapTo...
//        flatPapTo...
        // 提升效率，减少拆箱装箱
//        stream.mapToInt(Integer::parseInt)
//                .forEach(System.out::println);


        // 并行流提升效率
//        List<String> stringList = Arrays.asList("1", "2");
//        stringList.parallelStream()

        // 并行流，多线程的方式实现
        stream.parallel()
                // 消费，没有返回值
                .peek(str -> {
                    System.out.println("str = " + str);
                    System.out.println("Thread.currentThread().getName() = " + Thread.currentThread().getName());
                })
                // 正常操作不会修改流中原来的数据
                // 若采用某某对象的set方法等，回修改原始数据，不建议这么去做
                .map(str -> str.concat("d"))
                .forEach(System.out::println);
    }
}
